package com.evan.review.architecture.components.viewmodels;

import androidx.lifecycle.ViewModel;

import java.util.UUID;

/**
 * 计数器ViewModel
 * 用于演示ViewModel在配置更改时保留数据
 */
public class CounterViewModel extends ViewModel {
    
    // 计数值
    private int counter = 0;
    
    // 实例ID，用于证明ViewModel在配置更改时不会重新创建
    private final String instanceId;
    
    public CounterViewModel() {
        // 生成一个随机ID，用于识别ViewModel实例
        instanceId = UUID.randomUUID().toString().substring(0, 8);
    }
    
    /**
     * 增加计数
     */
    public void increment() {
        counter++;
    }
    
    /**
     * 减少计数
     */
    public void decrement() {
        counter--;
    }
    
    /**
     * 重置计数
     */
    public void reset() {
        counter = 0;
    }
    
    /**
     * 获取当前计数
     */
    public int getCounter() {
        return counter;
    }
    
    /**
     * 获取实例ID
     */
    public String getInstanceId() {
        return instanceId;
    }
    
    /**
     * 当ViewModel不再使用并即将被销毁时调用
     * 这是执行清理操作的好地方
     */
    @Override
    protected void onCleared() {
        super.onCleared();
        // 在实际应用中，可以在这里释放资源，如取消网络请求或清除大型数据结构
    }
} 